﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;

namespace LSFireWall
{
   //class WMI
   // {
   //     #region 1.如何用WMI获得指定磁盘的容量
   //     private string DriveType(string type)
   //     {
   //         string rtntype = "";
   //         switch (type)
   //         {
   //             case "1":
   //                 rtntype = "Not Type";
   //                 break;
   //             case "2":
   //                 rtntype = "Floppy disk";
   //                 break;
   //             case "3":
   //                 rtntype = "Hard disk";
   //                 break;
   //             case "4":
   //                 rtntype = "Removable drive or network drive";
   //                 break;
   //             case "5":
   //                 rtntype = "CD-ROM";
   //                 break;
   //             case "6":
   //                 rtntype = "RAM disk";
   //                 break;
   //             default:
   //                 break;
   //         }
   //         return rtntype;
   //     }

   //     private void Button1_Click(object sender, System.EventArgs e)
   //     {
   //         SelectQuery query = new SelectQuery("Select * From Win32_LogicalDisk");
   //         ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
   //         foreach (ManagementBaseObject disk in searcher.Get())
   //         {
   //             Response.Write(disk["Name"] + " " + DriveType(disk["DriveType"].ToString()) + " " + disk["VolumeName"] + "<br>");
   //         }
   //     }
   //     #endregion

   //     #region 2.如何用WMI获得指定磁盘的容量
   //     private void Button2_Click(object sender, System.EventArgs e)
   //     {
   //         ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
   //         disk.Get();
   //         Response.Write("Logical Disk Size = " + disk["Size"] + " bytes");
   //     }
   //     #endregion

   //     #region 3.如何列出机器中所有的共享资源
   //     private void Button3_Click(object sender, System.EventArgs e)
   //     {
   //         ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_share");
   //         foreach (ManagementObject share in searcher.Get())
   //         {
   //             Response.Write(share.GetText(TextFormat.Mof));
   //         }
   //     }
   //     #endregion

   //     #region 4.怎样写程控制让系统中的某个文件夹共享或取消共享
   //     private void Button4_Click(object sender, System.EventArgs e)
   //     {
   //         /*首先，这需要以有相应权限的用户登录系统才行
   //         将 
   //         object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 实现的共享",""}; 
   //         改为 
   //         object[] obj = {"C:\\Temp","我的共享",0,null,"Dot Net 实现的共享",""}; 
   //         就可以实现授权给最多用户了。
   //         */
   //         ManagementClass _class = new ManagementClass(new ManagementPath("Win32_Share"));
   //         object[] obj = { "C:\\Temp", "我的共享", 0, 10, "Dot Net 实现的共享", "" };
   //         _class.InvokeMethod("create", obj);
   //     }
   //     #endregion

   //     #region 5.如何获得系统服务的运行状态
   //     private void Button5_Click(object sender, System.EventArgs e)
   //     {
   //         string[] lvData = new string[4];
   //         ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Service");
   //         foreach (ManagementObject mo in searcher.Get())
   //         {
   //             lvData[0] = mo["Name"].ToString();
   //             lvData[1] = mo["StartMode"].ToString();
   //             if (mo["Started"].Equals(true))
   //                 lvData[2] = "Started";
   //             else
   //                 lvData[2] = "Stop";
   //             lvData[3] = mo["StartName"].ToString();
   //             Response.Write(lvData[0] + lvData[1] + lvData[2] + lvData[3]);
   //         }
   //     }
   //     #endregion

   //     #region 6.通过WMI修改IP，而实现不用重新启动
   //     private void Button6_Click(object sender, System.EventArgs e)
   //     {
   //         ReportIP();
   //         // SwitchToDHCP(); 
   //         SwitchToprivate();
   //         Thread.Sleep(5000);
   //         ReportIP();
   //         Response.Write("end.");
   //     }

   //     private void SwitchToDHCP()
   //     {
   //         ManagementBaseObject inPar = null;
   //         ManagementBaseObject outPar = null;
   //         ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
   //         ManagementObjectCollection moc = mc.GetInstances();
   //         foreach (ManagementObject mo in moc)
   //         {
   //             if (!(bool)mo["IPEnabled"])
   //                 continue;

   //             inPar = mo.GetMethodParameters("EnableDHCP");
   //             outPar = mo.InvokeMethod("EnableDHCP", inPar, null);
   //             break;
   //         }
   //     }

   //     private void SwitchToprivate()
   //     {
   //         ManagementBaseObject inPar = null;
   //         ManagementBaseObject outPar = null;
   //         ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
   //         ManagementObjectCollection moc = mc.GetInstances();
   //         foreach (ManagementObject mo in moc)
   //         {
   //             if (!(bool)mo["IPEnabled"])
   //                 continue;

   //             inPar = mo.GetMethodParameters("Enableprivate");
   //             inPar["IPAddress"] = new string[] { "192.168.1.1" };
   //             inPar["SubnetMask"] = new string[] { "255.255.255.0" };
   //             outPar = mo.InvokeMethod("Enableprivate", inPar, null);
   //             break;
   //         }
   //     }

   //     private void ReportIP()
   //     {
   //         Response.Write("****** Current IP addresses:");
   //         ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
   //         ManagementObjectCollection moc = mc.GetInstances();
   //         foreach (ManagementObject mo in moc)
   //         {
   //             if (!(bool)mo["IPEnabled"])
   //                 continue;

   //             string str = "{0}\n SVC: '{1}' MAC: [{2}]";
   //             str = string.Format(mo["Caption"].ToString(), mo["ServiceName"].ToString(), mo["MACAddress"].ToString());

   //             Response.Write(str);

   //             string[] addresses = (string[])mo["IPAddress"];
   //             string[] subnets = (string[])mo["IPSubnet"];

   //             Response.Write(" Addresses :");
   //             foreach (string sad in addresses)
   //                 Response.Write(sad + "<br>");

   //             Response.Write(" Subnets :");
   //             foreach (string sub in subnets)
   //                 Response.Write(sub + "<br>");
   //         }
   //     }
   //     #endregion

   //     #region 7.如何利用WMI远程重启远程计算机
   //     private void Button7_Click(object sender, System.EventArgs e)
   //     {
   //         Response.Write("Computer details retrieved using Windows Management Instrumentation (WMI)");
   //         Response.Write("mailto:singlepine@hotmail.com");
   //         Response.Write("=========================================================================");
   //         //连接远程计算机 
   //         ConnectionOptions co = new ConnectionOptions();
   //         co.Username = "john";
   //         co.Password = "john";
   //         System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\192.168.1.2\\root\\cimv2", co);
   //         //查询远程计算机 
   //         System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_OperatingSystem");

   //         ManagementObjectSearcher query1 = new ManagementObjectSearcher(ms, oq);
   //         ManagementObjectCollection queryCollection1 = query1.Get();
   //         foreach (ManagementObject mo in queryCollection1)
   //         {
   //             string[] ss = { "" };
   //             mo.InvokeMethod("Reboot", ss);
   //             Response.Write(mo.ToString());
   //         }
   //     }
   //     #endregion

   //     #region 8.利用WMI创建一个新的进程
   //     private void Button8_Click(object sender, System.EventArgs e)
   //     {
   //         //Get the object on which the method will be invoked 
   //         ManagementClass processClass = new ManagementClass("Win32_Process");

   //         //Get an input parameters object for this method 
   //         ManagementBaseObject inParams = processClass.GetMethodParameters("Create");

   //         //Fill in input parameter values 
   //         inParams["CommandLine"] = "calc.exe";

   //         //Execute the method 
   //         ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);

   //         //Display results 
   //         //Note: The return code of the method is provided in the "returnvalue" property of the outParams object 
   //         Response.Write("Creation of calculator process returned: " + outParams["returnvalue"]);
   //         Response.Write("Process ID: " + outParams["processId"]);

   //     }
   //     #endregion

   //     #region 9.如何通过WMI终止一个进程
   //     private void Button9_Click(object sender, System.EventArgs e)
   //     {
   //         ManagementObject service =
   //             new ManagementObject("win32_service=\"winmgmt\"");
   //         InvokeMethodOptions options = new InvokeMethodOptions();
   //         options.Timeout = new TimeSpan(0, 0, 0, 5);

   //         ManagementBaseObject outParams = service.InvokeMethod("StopService", null, options);

   //         Response.Write("Return Status = " + outParams["Returnvalue"]);
   //     }
   //     #endregion

   //     #region 10.如何用WMI 来获取远程机器的目录以及文件
   //     private void Button10_Click(object sender, System.EventArgs e)
   //     {
   //         ManagementObject disk = new ManagementObject(

   //             "win32_logicaldisk.deviceid=\"c:\"");

   //         disk.Get();

   //         Response.Write("Logical Disk Size = " + disk["Size"] + " bytes");
   //     }
   //     #endregion

   //     #region 11.网卡的MAC地址
   //     private void Button11_Click(object sender, System.EventArgs e)
   //     {
   //         ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
   //         ManagementObjectCollection moc = mc.GetInstances();
   //         foreach (ManagementObject mo in moc)
   //         {
   //             if ((bool)mo["IPEnabled"] == true)
   //                 Response.Write("MAC address" + mo["MacAddress"].ToString() + "<br>");
   //             mo.Dispose();
   //         }
   //     }
   //     #endregion

   //     #region 12.CPU的系列号
   //     private void Button12_Click(object sender, System.EventArgs e)
   //     {
   //         string cpuInfo = "";//cpu序列号 
   //         ManagementClass cimobject = new ManagementClass("Win32_Processor");
   //         ManagementObjectCollection moc = cimobject.GetInstances();
   //         foreach (ManagementObject mo in moc)
   //         {
   //             cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
   //             Response.Write(cpuInfo);
   //         }
   //     }
   //     #endregion

   //     #region 13.主板的系列号
   //     private void Button13_Click(object sender, System.EventArgs e)
   //     {
   //         ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
   //         foreach (ManagementObject share in searcher.Get())
   //         {
   //             Response.Write("主板制造商:" + share["Manufacturer"].ToString());
   //             Response.Write("型号:" + share["Product"].ToString());
   //             Response.Write("序列号:" + share["SerialNumber"].ToString());
   //         }
   //     }
   //     #endregion

   //     #region 14.获取硬盘ID
   //     private void Button14_Click(object sender, System.EventArgs e)
   //     {
   //         String HDid;
   //         ManagementClass cimobject = new ManagementClass("Win32_DiskDrive");
   //         ManagementObjectCollection moc = cimobject.GetInstances();
   //         foreach (ManagementObject mo in moc)
   //         {
   //             HDid = (string)mo.Properties["Model"].Value;
   //             Response.Write(HDid);
   //         }
   //     }
   //     #endregion

   //     #region 15.获取本机的用户列表
   //     private void Button15_Click(object sender, System.EventArgs e)
   //     {
   //         SelectQuery query = new SelectQuery("SELECT * FROM Win32_UserAccount");
   //         ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
   //         foreach (ManagementObject os in searcher.Get())
   //         {
   //             Response.Write(os["Name"]);
   //         }
   //     }
   //     #endregion
   // }
}
